Programmer's today have become accustomed to being able to create and debug programs via a plethora of tools implemented in today's Integrated Development Environments (IDEs) such as Microsoft® Visual Studio. A programmer may create source code for a program to be executed by a target processor, compile the source code to generate an executable file, and run the executable file on the target processor. The IDE may include tools that allow the programmer to execute the program using breakpoints, step through the program one instruction at a time, step through the program from breakpoint to breakpoint, and view the contents of memory or registers at different points during the program's execution.
Typically, the target processor may be a central processing unit (CPU) such as the Intel® x86 family of processors or the ARM® Cortex family of processors that include a RISC (Reduced Instruction Set Computing) based CPU core. Such processors may be implemented with the ability to interrupt or pre-empt the execution of certain code executed by the processor. This ability enables a programmer to debug programs via a single processor that is also used to execute the operating system (OS), IDE, or other software substantially simultaneously. However, today's conventional graphics processing units (GPUs) may not be capable of operating in this fashion. For example, conventional GPUs may not enable pre-emption for specific processes executing on the GPU. In other words, the programmer cannot halt the execution of a program on the GPU while allowing other operations, such as generating graphics information for display on an attached monitor, to continue to be executed. Without such capabilities, debugging platforms for GPUs are typically limited to remote systems having a GPU connected to a client system over a network or local systems with multiple GPUs, where one GPU is dedicated to display operations and the other GPU is dedicated to debugging operations. Such systems are more complex to setup and operate, requiring extra hardware and special configuration. It would be useful for programmers to be able to code on single-GPU systems, which are abundantly available on most desktop and laptop computers. Thus, there is a need for addressing this issue and/or other issues associated with the prior art.